ROM	      :=DBZ-sgth-orig.smc

# Linux/Unix = 0, Windows = 1
WINDOWS   :=0

# fr, en, es, etc...
LANGUAGE  :=fr

VERSION   :=2.0

CXX	      :=g++
CXXFLAGS  :=-O2 -Wall
WLA_FLAGS :=-DENABLE_DEBUG_MENU=1 -DENABLE_RELEASE=1 -DLANGUAGE=$(LANGUAGE)
ifeq ($(WINDOWS),1)
  # Windows
  RM	    :=del
  DEFINES :=-DWINDOWS
  EXEEXT  :=.exe
else
  # Linux/Unix
  RM	    :=rm -f
  EXEEXT  :=
endif
TOPDIR	:=.
LD	    :=g++
ZIP	    :=zip -9
INCDIRS :=-I$(TOPDIR)

.PHONY: all $(LANGUAGE) toolkit

2x1BPP_OBJECTS:=2x1bpp.o
4x1BPP_OBJECTS:=4x1bpp.o
GB_OBJECTS:=gb.o

ASM_OBJECTS:=Background.o\
FreeSpace.o\
PrintString.o\
PrintString-tr.o\
ScenarioCmds.o\
NewGame.o\
LoadSave.o\
StartScreen.o\
Battle.o\
Battle-tr.o\
TitleScreen-tr.o\
Ending.o\
DebugMenu.o

# files generated by graphic insertion / compression tools
GFX_FILES:=BtlSpriteGfx.bin BtlSpriteGfxComp.bin TitleScreenTextGfx.bin TitleScreenTextGfxComp.bin
# files generated by dumper, keep modified dump files
DUMP_FILES:=$(filter-out $(wildcard *-mod.dump), $(wildcard *.dump)) $(wildcard data-jp/*.txt)

TOOLS:=2x1bpp$(EXEEXT) 4x1bpp$(EXEEXT) gb$(EXEEXT)

TRANSLATED_FILES:=$(wildcard data-$(LANGUAGE)/*.txt)\
data-$(LANGUAGE)/font.tbl\
data-$(LANGUAGE)/font.bmp\
data-$(LANGUAGE)/font.wid

TOOL_ZIP:=DBZSuperGokuden1-TranslationTools-$(VERSION).zip
TOOL_ZIP_FILES:=2x1bpp.c\
4x1bpp.c\
gb.c\
2x1bpp\
4x1bpp\
gb\
2x1bpp.exe\
4x1bpp.exe\
gb.exe\
codec.ss\
dumper.ss\
inserter.ss\
$(wildcard libs/*.ss)\
common.inc\
$(wildcard *.wsm data-temp/*.wsm)\
asmhacks.wlk\
Makefile\
$(wildcard *-mod.dump)\
data-jp/DlgFont.tbl\
data-jp/DlgFont1-orig.bmp\
data-jp/DlgFont2-orig.bmp\
data-jp/BtlSpriteGfx-orig.bmp\
data-jp/TitleScreenTextGfx-orig.bmp\
data-temp/BtlSpriteGfx.bmp\
data-temp/TitleScreenTextGfx.bmp\
data-temp/font.bmp\
data-temp/font.wid\
data-temp/font.tbl\
$(wildcard data-temp/*-ex.txt)\
Tools-ReadMe-fr.txt\
Tools-ReadMe-en.txt\
Script-ReadMe-fr.txt\
Script-ReadMe-en.txt

CLEAN_FILES:=$(ASM_OBJECTS) $(2x1BPP_OBJECTS) $(4x1BPP_OBJECTS) $(GB_OBJECTS) $(GFX_FILES)
REALCLEAN_FILES:=$(TOOL_ZIP) $(DUMP_FILES) DBZ-sgth-$(LANGUAGE).sym DBZ-sgth-$(LANGUAGE).smc

%.o: %.cpp
	$(CXX) -c $(INCDIRS) $(CXXFLAGS) $(DEFINES) $<

%.o: %.c
	$(CXX) -c $(INCDIRS) $(CXXFLAGS) $(DEFINES) $<

%.o: %.wsm
	wla-65816 $(WLA_FLAGS) -x -o $@ $<

all: $(TOOLS) $(LANGUAGE)

PrintString-tr.o: data-$(LANGUAGE)/PrintString-tr.wsm data-$(LANGUAGE)/font.wid
	wla-65816 $(WLA_FLAGS) -x -o $@ $<

Battle-tr.o: data-$(LANGUAGE)/Battle-tr.wsm BtlSpriteGfxComp.bin
	wla-65816 $(WLA_FLAGS) -x -o $@ $<

TitleScreen-tr.o: data-$(LANGUAGE)/TitleScreen-tr.wsm TitleScreenTextGfxComp.bin
	wla-65816 $(WLA_FLAGS) -x -o $@ $<

2x1bpp$(EXEEXT): $(2x1BPP_OBJECTS)
	$(LD) $(2x1BPP_OBJECTS) -o $@

4x1bpp$(EXEEXT): $(4x1BPP_OBJECTS)
	$(LD) $(4x1BPP_OBJECTS) -o $@

gb$(EXEEXT): $(GB_OBJECTS)
	$(LD) $(GB_OBJECTS) -o $@

BtlSpriteGfx.bin: data-$(LANGUAGE)/BtlSpriteGfx.bmp
	./4x1bpp -i -n -t 183 $@ data-$(LANGUAGE)/BtlSpriteGfx.bmp

BtlSpriteGfxComp.bin: BtlSpriteGfx.bin codec.ss
	./codec --compress $@ BtlSpriteGfx.bin

TitleScreenTextGfx.bin: data-$(LANGUAGE)/TitleScreenTextGfx.bmp
	./2x1bpp -i -n -t 310 $@ data-$(LANGUAGE)/TitleScreenTextGfx.bmp

TitleScreenTextGfxComp.bin: TitleScreenTextGfx.bin codec.ss
	./codec --compress $@ TitleScreenTextGfx.bin

$(LANGUAGE): DBZ-sgth-$(LANGUAGE).smc inserter.ss $(TRANSLATED_FILES)
	./gb -i -t 1024 -o 0x18000 DBZ-sgth-$(LANGUAGE).smc data-$(LANGUAGE)/font.bmp
	./inserter

DBZ-sgth-$(LANGUAGE).smc: $(ASM_OBJECTS) asmhacks.wlk
	wlalink -S asmhacks.wlk $@
	
toolkit: $(TOOL_ZIP_FILES)
	$(RM) $(TOOL_ZIP)
	echo y | $(ZIP) $(TOOL_ZIP) $(TOOL_ZIP_FILES)

clean: 
	$(foreach file,$(CLEAN_FILES),$(RM) $(file);)

realclean: clean
	$(foreach file,$(REALCLEAN_FILES),$(RM) $(file);)

Background.o: Background.wsm $(ROM) 
